VERIFICATION_SUCCEEDED: 3
};
+const BeginRequestType = {
+ PROVIDE_USERNAME: 0,
+ DONT_PROVIDE_USERNAME: 1
+};
+
const AuthPrompt = new Lang.Class({
Name: 'AuthPrompt',
if (oldStatus == AuthPromptStatus.VERIFICATION_FAILED)
this.emit('failed');
- this.emit('reset');
+ this.emit('reset', BeginRequestType.PROVIDE_USERNAME);
},
addCharacter: function(unichar) {
x_align: St.Align.START,
x_fill: true });
- this._notListedButton.connect('clicked', Lang.bind(this, this._hideUserListAndLogIn));
+ this._notListedButton.connect('clicked',
+ Lang.bind(this, function() {
+ this._authPrompt.cancelButton.show();
+ this._hideUserListAndLogIn();
+ }));
+
this._notListedButton.hide();
this._userSelectionBox.add(this._notListedButton,
this._showPrompt();
},
- _onReset: function() {
+ _onReset: function(authPrompt, beginRequest) {
this._sessionMenuButton.updateSensitivity(true);
this._user = null;
- if (this._disableUserList)
+ if (this._disableUserList) {
+ this._authPrompt.cancelButton.hide();
this._hideUserListAndLogIn();
- else
+ } else {
this._showUserList();
+ }
},
_onDefaultSessionChanged: function(client, sessionId) {
this._authPrompt.setHint(_("(e.g., user or %s)").format(hint));
},
- _askForUsernameAndLogIn: function() {
+ _askForUsernameAndBeginVerification: function() {
this._authPrompt.setPasswordChar('');
this._authPrompt.setQuestion(_("Username: "));
this._userSelectionBox.visible = expanded;
},
- _hideUserListAndLogIn: function() {
+ _hideUserList: function() {
this._setUserListExpanded(false);
if (this._userSelectionBox.visible)
GdmUtil.cloneAndFadeOutActor(this._userSelectionBox);
- this._askForUsernameAndLogIn();
+ },
+
+ _hideUserListAskForUsernameAndBeginVerification: function() {
+ this._hideUserList();
+ this._askForUsernameAndBeginVerification();
+ },
+
+ _hideUserListAndBeginVerification: function() {
+ this._hideUserList();
+ this._authPrompt.begin();
},
_showUserList: function() {
this._authPrompt = new AuthPrompt.AuthPrompt(new Gdm.Client(), AuthPrompt.AuthPromptMode.UNLOCK_ONLY);
this._authPrompt.connect('failed', Lang.bind(this, this._fail));
this._authPrompt.connect('cancelled', Lang.bind(this, this._fail));
- this._authPrompt.setUser(this._user);
+ this._authPrompt.connect('reset', Lang.bind(this, this._onReset));
this._authPrompt.setPasswordChar('\u25cf');
this._authPrompt.nextButton.label = _("Unlock");
this._otherUserButton = null;
}
- this._authPrompt.begin({ userName: this._userName });
+ this._authPrompt.reset();
this._updateSensitivity(true);
Main.ctrlAltTabManager.addGroup(this.actor, _("Unlock Window"), 'dialog-password-symbolic');
this.emit('failed');
},
+ _onReset: function(authPrompt, beginRequest) {
+ let userName;
+ if (beginRequest == AuthPrompt.BeginRequestType.PROVIDE_USERNAME) {
+ this._authPrompt.setUser(this._user);
+ userName = this._userName;
+ } else {
+ userName = null;
+ }
+
+ this._authPrompt.begin({ userName: userName });
+ },
+
_escape: function() {
if (this.allowCancel)
this._authPrompt.cancel();